package com.zjsru.oneday202208;


import java.util.Arrays;

/**
 * @Author: likew
 * @Date: 2022/8/24
 * 通过翻转子数组使两个数组相等
 * 输入：target = [1,2,3,4], arr = [2,4,1,3]
 * 输出：true
 * 解释：你可以按照如下步骤使 arr 变成 target：
 * 1- 翻转子数组 [2,4,1] ，arr 变成 [1,4,2,3]
 * 2- 翻转子数组 [4,2] ，arr 变成 [1,2,4,3]
 * 3- 翻转子数组 [4,3] ，arr 变成 [1,2,3,4]
 * 上述方法并不是唯一的，还存在多种将 arr 变成 target 的方法。
 *
 */
public class CanBeEqual {
    public boolean canBeEqual(int[] target, int[] arr) {
        int m = target.length, n = arr.length;
        int[] nums = new int[1011];
        for (int i = 0; i < m; i++) {
            nums[target[i]]++;
        }
        for (int i = 0; i < n; i++) {
            nums[arr[i]]--;
        }
        for (int num:nums) {
            if(num < 0){
                return false;
            }
        }
        return true;
    }
    /**
    * 使用工具类进行排序
    * */
    public boolean canBeEqual1(int[] target, int[] arr) {
        Arrays.sort(arr);
        Arrays.sort(target);
        boolean equals = Arrays.equals(target, arr);
        if (equals) {
            return true;
        }
        return false;
    }
    
    public static void main(String[] args) {
        CanBeEqual canBeEqual = new CanBeEqual();
        int[] target = new int[]{1,2,3,4};
        int[] arr = new int[]{1,4,2,3};
        System.out.println(canBeEqual.canBeEqual1(target, arr));
    }
}
